home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 August: Tool Chest / Dev.CD Aug 00 TC Disk 2.toast / pc / sample code / sound / sndplaydoublebuffer / sal Ä / sal_public.h next >
Encoding:
C/C++ Source or Header  |  2000-06-23  |  14.6 KB  |  427 lines

  1. #ifndef SAL_PUBLIC_H
  2. #define SAL_PUBLIC_H
  3. /***************************************************************************\
  4. |***************************************************************************|
  5. |                                                                            |
  6. |     SimpleApp Framework: A Simple Application Framework                        |
  7. |        by Apple Macintosh Developer Technical Support                        |
  8. |                                                                            |
  9. |    File Name:    SAL_Public.h                                                |
  10. |                                                                            |
  11. |    Contains:    SimpleAppLib public interface                                |
  12. |                                                                            |
  13. |    DRI: George Warner, Apple Developer Technical Support (dts@apple.com)    |
  14. |                                                                            |
  15. |    Copyright:    © 1999 by Apple Computer,Inc., all rights reserved.            |
  16. |                                                                            |
  17. |    You may incorporate this sample code into your applications without        |
  18. |    restriction, though the sample code has been provided "AS IS" and the    |
  19. |    responsibility for its operation is 100% yours.  However, what you are    |
  20. |    not permitted to do is redistribute the source as "Apple Sample Code"    |
  21. |    after having made changes. If you're going to re-distribute the source,    |
  22. |    we require that you make it clear in the source that the code was        |
  23. |    descended from Apple Sample Code, but that you've made changes.            |
  24. |                                                                            |
  25. | **************************************************************************|
  26. |            C h a n g e        H i s t o r y (most recent first):                |
  27. | **************************************************************************|
  28. |        Vers      Date        Author        Description                            |
  29. |        ----    --------    ------    ----------------------------------------|
  30. |        2.0         8/10/99     gaw    Converted to C                            |
  31. |        1.0         4/ 1/94     mxm    Initial version                            |
  32. |***************************************************************************|
  33. \***************************************************************************/
  34.  
  35. /************************************************************\
  36. |*    NOTICE: This is an minimun header file for SAL;            *|
  37. |*            It's just enough to build the sample apps.        *|
  38. |*            SAL is a work in progress; we'll release more    *|
  39. |*            as we write it.                                    *|
  40. \************************************************************/
  41.  
  42. #if PRAGMA_ONCE
  43. #pragma once
  44. #endif
  45.  
  46. #ifdef __cplusplus
  47. extern "C"
  48. {
  49. #endif
  50.  
  51. #if PRAGMA_IMPORT
  52. #pragma import on
  53. #endif
  54.  
  55. #if PRAGMA_STRUCT_ALIGN
  56. #pragma options align=mac68k
  57. #elif PRAGMA_STRUCT_PACKPUSH
  58. #pragma pack(push, 2)
  59. #elif PRAGMA_STRUCT_PACK
  60. #pragma pack(2)
  61. #endif
  62.  
  63. #include <Controls.h>
  64. #include <Lists.h>
  65. /**\
  66. |**|    Typedefs, defines, enums, structs, etc.
  67. \**/
  68.  
  69.  
  70. enum
  71. {
  72.     kSAL_ErrorBase = 0,                        //  Base value for ErrorNumbers
  73.     kSAL_StandardDebugAlert = 9999,
  74.     kSAL_NonFatalError = 0,
  75.     kSAL_FatalError = kSAL_ErrorBase - 1,
  76.     kSAL_BadSelectorErr = kSAL_ErrorBase - 2,
  77.     kSAL_BadProcPtr = kSAL_ErrorBase - 3,
  78.     kSAL_NotOurWindowError = kSAL_ErrorBase - 4,
  79.     kSAL_NotValidObject = kSAL_ErrorBase - 5
  80. };
  81.  
  82.  
  83. enum
  84. {
  85.     kSAL_UseStandardMenu = true,
  86.     kSAL_MenuStartID = 127,
  87.     kSAL_AppleNum = 128,
  88.     kSAL_FileNum = 129,
  89.     kSAL_EditNum = 130,
  90.     kSAL_EditMenu = 3,
  91.     kSAL_UndoItem = 1,
  92.     //kSAL_Undefined = 2,
  93.     kSAL_CutItem = 3,
  94.     kSAL_CopyItem = 4,
  95.     kSAL_PasteItem = 5,
  96.     kSAL_ClearItem = 6
  97. };
  98.  
  99. //key navigation
  100. enum
  101. {
  102.     kSAL_NoKey = 0,
  103.     kSAL_NoCommandKey = 0,
  104.     kSAL_UpArrow = 30,
  105.     kSAL_DownArrow = 31,
  106.     kSAL_EnterKey = 3,
  107.     kSAL_ReturnKey = 13,
  108.     kSAL_TabKey = 9
  109. };
  110.  
  111. //List Flags
  112. enum
  113. {
  114.     kSAL_ListDrawFrame = 1,
  115.     kSAL_ListVScroll = 2,
  116.     kSAL_ListHScroll = 4,
  117.     kSAL_ListCustomLDEF = 8,
  118.     kSAL_ListDrawingOn = 16,
  119.     kSAL_ListHasGrow = 32,
  120.     kSAL_ListWantsDrag = 64,
  121.     kSAL_StandardList = kSAL_ListDrawFrame + kSAL_ListVScroll + kSAL_ListDrawingOn
  122. };
  123.  
  124.  
  125. enum
  126. {
  127.     kSAL_MagicSig = 0x4D584D21,                // 'MXM!' our magic signature
  128.     kSAL_MaxMenus = 20,
  129.     kSAL_MaxMenuItems = 128,
  130.     kSAL_MaxButtons = 128,
  131.     kSAL_MaxEventProc = 10,
  132.     kSAL_AppleEventLoadingErr = 129,
  133.     kSAL_EventPassThru = true,// This lets the event pass thru to the default handler
  134.     kSAL_EventOverRide = false,                // This overides the event and doesn't call to the default handler
  135.     kSAL_ResultNoErr = noErr,
  136.     kSAL_ResultPassThru = 1,
  137.     kSAL_ResultOverride = 0,
  138.     kSAL_DefaultStackSize = (SInt32)(24 * 1024),
  139.     kSAL_Margin = 5
  140. };
  141.  
  142. typedef Str255                StringArray[];
  143. typedef StringArray*        StringArray_Ptr;
  144. typedef StringArray_Ptr*    StringArray_Hdl;
  145.  
  146. typedef ControlHandle        ControlArray[];
  147. typedef ControlArray*        ControlArray_Ptr;
  148. typedef ControlArray_Ptr*    ControlArray_Hdl;
  149.  
  150. // Opaque references
  151. typedef struct ButtonItem_Struct**    ButtonItemRef;
  152. typedef struct Group_Struct**        GroupRecRef;
  153. typedef struct ListItem_Struct**    ListItemRef;
  154. typedef struct ObjectItem_Struct**    ObjectRef;
  155. typedef struct WindowItem_Struct**    WindowItemRef;
  156.  
  157. // ProcPtr's
  158. typedef pascal void        (*SalAction_ProcPtr)(const ControlHandle pCtrlHdl,
  159.                                          const SInt16 pPart);
  160.  
  161. typedef pascal OSErr    (*SalButtonHit_ProcPtr)(const ButtonItemRef pButtonItemRef,
  162.                                              const SInt32 pModifiers);
  163.  
  164. typedef pascal OSErr    (*SalButtonUpdate_ProcPtr)(const SInt32 pModifiers);
  165. typedef pascal OSErr    (*SalEvent_ProcPtr)(const EventRecord* pEventPtr);
  166. typedef pascal Boolean    (*SalAbout_ProcPtr)(const SInt32 pData);
  167.  
  168. typedef pascal OSErr    (*SalListHit_ProcPtr)(const Boolean pIsDoubleClick,
  169.                                            const Point pCell,
  170.                                            const Rect* pBounds,
  171.                                            const ListItemRef pListItemRef);
  172.  
  173. typedef pascal OSErr    (*SalListTrack_ProcPtr)(const EventRecord* pEventPtr,
  174.                                              const ListItemRef pListItemRef);
  175.  
  176. typedef pascal OSErr    (*SalListUpdate_ProcPtr)(const RgnHandle pUpdateRgn_Hdl,
  177.                                               const ListItemRef pListItemRef);
  178.  
  179. typedef pascal void        (*SalListDrawCell_ProcPtr)(const Point pCell,
  180.                                                const Rect* pBounds,
  181.                                                const ListItemRef pListItemRef);
  182.  
  183. typedef pascal OSErr    (*SalListIdle_ProcPtr)(const EventRecord* pEventPtr,
  184.                                             const ListItemRef pListItemRef);
  185.  
  186. typedef pascal OSErr    (*SalListKey_ProcPtr)(EventRecord* pEventPtr,
  187.                                            ListItemRef pListItemRef);
  188.  
  189. typedef pascal OSErr    (*SalMenuEvent_ProcPtr)(const SInt32 pMenuResult);
  190. typedef pascal OSErr    (*SalMenuHit_ProcPtr)(const SInt32 pModifiers);
  191. typedef pascal OSErr    (*SalMenuUpdate_ProcPtr)(const SInt32 pModifiers);
  192.  
  193. typedef pascal OSErr    (*SalWindowHit_ProcPtr)(const WindowItemRef pWIR,
  194.                                              const EventRecord* pEventPtr);
  195.  
  196. typedef pascal OSErr    (*SalWindowUpdate_ProcPtr)(const SInt32 pModifiers);
  197. typedef pascal OSErr    (*SalWindowResize_ProcPtr)(const WindowPtr pWindowPtr);
  198.  
  199.  
  200. typedef pascal Boolean    (*SalGroupPreHit_ProcPtr)(const SInt32 pModifiers,
  201.                                                  const Point pPoint,
  202.                                                  const ControlArray_Ptr pCAP,
  203.                                                  const SInt16 pCount);
  204.  
  205. typedef pascal OSErr    (*SalGroupPostHit_ProcPtr)(const SInt32 pModifiers,
  206.                                                 const ControlHandle pCtrl_Hdl,
  207.                                                 const ButtonItemRef pBIR,
  208.                                                 const SInt16 pItem);
  209.  
  210. typedef pascal OSErr    (*SalGroupUpdate_ProcPtr)(const WindowPtr pWindowPtr,
  211.                                                const GroupRecRef pGroupRecRef);
  212.  
  213. /**\
  214. |**|    external globals
  215. \**/
  216.  
  217. extern SInt16            gSAL_NumberOfWindows;
  218. extern WindowPtr        gSAL_CurrentWindow;
  219. extern WindowItemRef    gSAL_CurrentWindowItemRef;
  220. extern ControlHandle    gSAL_CurrentControl;
  221. extern ListHandle        gSAL_CurrentList;
  222.  
  223. extern TextStyle        gSAL_DefaultStyle;
  224. extern TextStyle        gSAL_TextStyle;
  225.  
  226. extern SysEnvRec        gSAL_Mac;
  227.  
  228. /**\
  229. |**|    external function prototypes
  230. \**/
  231. //-----------------------------------------------------------------------------
  232. //    Application
  233. //-----------------------------------------------------------------------------
  234. // Initialize SimpleApp
  235. extern pascal void SAL_InitSimpleApp(const SInt16 pMasters,
  236.                                      const Boolean pWantsStandardMenu);
  237. // Run
  238. extern pascal void SAL_Run(void);
  239.  
  240. extern pascal OSErr SAL_AddStringToList(const ListHandle pListID,
  241.                                         const Str255 pStr255);
  242.  
  243. // Get & Set the print area
  244. extern pascal void SAL_GetPrintArea(const WindowPtr pWindowPtr,
  245.                                     Rect* pBounds);
  246. extern pascal void SAL_SetPrintArea(const WindowPtr pWindowPtr,
  247.                                     const Rect* pBounds);
  248.  
  249. // Print no CR
  250. extern pascal void SAL_Print(const StringPtr pStringPtr);
  251. // Print with CR
  252. extern pascal void SAL_PrintLine(const StringPtr pStringPtr);
  253. // Print a buffer full of text with CR
  254. extern pascal void SAL_PrintTextHandle(const Handle pText_Hdl);
  255.  
  256. extern pascal void SAL_SetCursorBusy(void);
  257. extern pascal void SAL_DefaultCursor(void);
  258. //-----------------------------------------------------------------------------
  259. //    Controls
  260. //-----------------------------------------------------------------------------
  261. extern pascal Rect SAL_GetGroupBounds(GroupRecRef pGroupRecRef);
  262.  
  263. extern pascal OSErr SAL_InstallCheckBox(const SInt32 pButtonID,
  264.                                         const WindowPtr pWindowPtr,
  265.                                         const Str255 pName,
  266.                                         const Rect* pRect,
  267.                                         const UInt8 pCmdKey,
  268.                                         const SInt16 pInitialValue,
  269.                                         const SalButtonHit_ProcPtr pBHP,
  270.                                         const SalButtonUpdate_ProcPtr pBUP);
  271.  
  272. extern pascal OSErr SAL_InstallPushButton(const SInt32 pButtonID,
  273.                                           const WindowPtr pWindowPtr,
  274.                                           const Str255 pName,
  275.                                           const Rect* pRect,
  276.                                           const UInt8 pCmdKey,
  277.                                           const SalButtonHit_ProcPtr pBHP,
  278.                                           const SalButtonUpdate_ProcPtr pBUP);
  279.  
  280. extern pascal OSErr SAL_InstallRadioGroup(const SInt32 pGroupID,
  281.                                           const WindowPtr pWindowPtr,
  282.                                           const SInt16 pCount,
  283.                                           const Str255 pTitle,
  284.                                           const StringArray_Ptr pNames,
  285.                                           const Rect* pRect,
  286.                                           const SInt16 pDefaultItem,
  287.                                           const SInt16 pSpacingH,
  288.                                           const SInt16 pSpacingV,
  289.                                           const SInt16 pButtonHeight,
  290.                                           const SInt16 pButtonWidth,
  291.                                           const SalGroupPreHit_ProcPtr pPreGHP,
  292.                                           const SalGroupPostHit_ProcPtr pPostGHP,
  293.                                           const SalGroupUpdate_ProcPtr pGUP);
  294.  
  295. extern pascal void SAL_DisableMe(void);
  296. extern pascal void SAL_EnableMe(void);
  297.  
  298. extern pascal void SAL_SetTitle(const StringPtr pTitle);
  299. //-----------------------------------------------------------------------------
  300. //    Error Unit
  301. //-----------------------------------------------------------------------------
  302. extern pascal void SAL_ErrorMessage(const StringPtr pMessage,
  303.                                     const OSStatus pOSStatus,
  304.                                     const SInt16 pFlags);
  305. //-----------------------------------------------------------------------------
  306. //    Lists
  307. //-----------------------------------------------------------------------------
  308. extern pascal OSErr SAL_InstallList(const SInt32 pListID,
  309.                                     const WindowPtr pWindowPtr,
  310.                                     const Point pCellSize,
  311.                                     const Rect* pRect,
  312.                                     const SalListHit_ProcPtr pLHP,
  313.                                     const SalListTrack_ProcPtr pLTP,
  314.                                     const SalListUpdate_ProcPtr pLUP,
  315.                                     const SalListDrawCell_ProcPtr pLDCP,
  316.                                     const ListDefUPP pLDefUPP,
  317.                                     const SInt32 pFlags);
  318. //-----------------------------------------------------------------------------
  319. //    Menus
  320. //-----------------------------------------------------------------------------
  321. extern pascal OSErr SAL_AttachMenuToMenuItem(const SInt16 pMenuIDToAdd,
  322.                                              const SInt16 pAttachMenuID,
  323.                                              const SInt16 pAttachMenuItem);
  324.  
  325. extern pascal OSErr SAL_InstallFontMenu(const SInt16 pMenuID,
  326.                                         const Str255 pName,
  327.                                         const Boolean pIsHeirarchical,
  328.                                         const SalMenuHit_ProcPtr pMHP,
  329.                                         const SalMenuUpdate_ProcPtr pMUP);
  330.  
  331. extern pascal OSErr SAL_InstallMenu(const SInt16 pMenuID,
  332.                                     const Str255 pMenuTitle,
  333.                                     const Boolean pIsHierarchical,
  334.                                     const SalMenuHit_ProcPtr pMHP,
  335.                                     const SalMenuUpdate_ProcPtr pMUP);
  336.  
  337. extern pascal OSErr SAL_InstallMenuItem(const SInt16 pMenuID,
  338.                                         const SInt16 pMenuItem,
  339.                                         const Str255 pMenuTitle,
  340.                                         const char pMarkChar,
  341.                                         const char pCmdChar,
  342.                                         const SalMenuHit_ProcPtr pMHP,
  343.                                         const SalMenuUpdate_ProcPtr pMUP);
  344.  
  345. extern pascal OSErr SAL_InstallResourceMenu(const SInt16 pMenuID,
  346.                                             const Str255 pMenuTitle,
  347.                                             const OSType pResType,
  348.                                             const Boolean pIsHiearchical,
  349.                                             const SalMenuHit_ProcPtr pMHP,
  350.                                             const SalMenuUpdate_ProcPtr pMUP);
  351. //-----------------------------------------------------------------------------
  352. //    Objects
  353. //-----------------------------------------------------------------------------
  354. extern pascal void SAL_DisableObject(const SInt32 pThing);
  355. extern pascal void SAL_EnableObject(const SInt32 pThing);
  356.  
  357. extern pascal SInt32 SAL_GetObjectRefCon(const SInt32 pThing);
  358. extern pascal void SAL_SetObjectRefCon(const SInt32 pThing,
  359.                                        SInt32 pRefCon);
  360.  
  361. extern pascal Handle SAL_GetObjectHandle(const SInt32 pThing);
  362. //-----------------------------------------------------------------------------
  363. //    ProcUnit
  364. //-----------------------------------------------------------------------------
  365. extern pascal void SAL_InstallIdleProc(const SalEvent_ProcPtr pEventProc);
  366. extern pascal void SAL_InstallAboutProc(const SalAbout_ProcPtr pAboutProc);
  367. //-----------------------------------------------------------------------------
  368. //    ScrollBars
  369. //-----------------------------------------------------------------------------
  370. extern pascal OSErr SAL_InstallScrollBar(const SInt32 pButtonID,
  371.                                          const WindowPtr pWindowPtr,
  372.                                          const Str255 pName,
  373.                                          const Rect* pRect,
  374.                                          const UInt8 pCmdKey,
  375.                                          const SalAction_ProcPtr pSHP,
  376.                                          const SalAction_ProcPtr pSBP,
  377.                                          const SalAction_ProcPtr pSIP);
  378. //-----------------------------------------------------------------------------
  379. //    Utils
  380. //-----------------------------------------------------------------------------
  381. extern pascal SInt8 SAL_LockHandle(Handle pHandle);
  382. extern pascal void SAL_UnlockHandle(Handle pHandle,
  383.                                     const SInt8 pState);
  384.  
  385. // This Sets a rects anchor point
  386. extern pascal void SAL_SetRectLocation(Rect* pRect,
  387.                                        const SInt16 pH,
  388.                                        const SInt16 pV);
  389.  
  390. // This Sets its size without changing its position
  391. extern pascal void SAL_SetRectDimensions(Rect* pRect,
  392.                                          const SInt16 pH,
  393.                                          const SInt16 pV);
  394. //-----------------------------------------------------------------------------
  395. //    Windows
  396. //-----------------------------------------------------------------------------
  397. // Deprecated funtion do not use
  398. extern pascal SInt16 SAL_GetDocWindow(SInt16 pResID);
  399. extern pascal SInt16 SAL_GetDocumentWindow(const SInt16 pResID,
  400.                                            WindowPtr* pWindowPtr);
  401. extern pascal void SAL_SetWindowUpdateProc(const WindowPtr pWindowPtr,
  402.                                            const SalWindowUpdate_ProcPtr pWindowUpdateProc);
  403. extern pascal void SAL_SetWindowResizeProc(const WindowPtr pWindowPtr,
  404.                                            const SalWindowResize_ProcPtr pWRP);
  405. extern pascal OSErr SAL_DoWindowClose(const WindowPtr pWindowPtr);
  406. //-----------------------------------------------------------------------------
  407. #if PRAGMA_STRUCT_ALIGN
  408. #pragma options align=reset
  409. #elif PRAGMA_STRUCT_PACKPUSH
  410. #pragma pack(pop)
  411. #elif PRAGMA_STRUCT_PACK
  412. #pragma pack()
  413. #endif
  414.  
  415. #ifdef PRAGMA_IMPORT_OFF
  416. #pragma import off
  417. #elif PRAGMA_IMPORT
  418. #pragma import reset
  419. #endif
  420.  
  421. #ifdef __cplusplus
  422. }
  423. #endif
  424.  
  425. #endif SAL_PUBLIC_H
  426.  
  427.